package com.xAdmin.domain.enums;

/**
 * @author: xiaYZ 2025/3/7
 * @version: 1.0
 */
/**
 * 系统操作日志类型枚举类
 */
public enum LogTypeEnum {
    // 按业务逻辑重要性排序，其他类型作为兜底
    OTHER(0, "其他操作"),
    LOGIN(1, "用户登录"),
    CREATE(2, "新增数据"),
    UPDATE(3, "修改数据"),
    DELETE(4, "删除数据"),
    IMPORT(5, "数据导入"),
    EXPORT(6, "数据导出"),
    ERROR(7,"异常日志");

    /**
     * 操作类型编码（建议使用正整数标识）
     */
    private final int code;

    /**
     * 操作类型描述（用户可读文本）
     */
    private final String message;

    LogTypeEnum(int code, String message) {
        this.code = code;
        this.message = message;
    }

    /**
     * 获取操作类型编码
     */
    public int getCode() {
        return code;
    }

    /**
     * 获取操作类型描述
     */
    public String getMessage() {
        return message;
    }

    /**
     * 通过操作码获取枚举实例
     * @param code 操作类型编码
     * @return 枚举实例（未找到返回OTHER）
     */
    public static LogTypeEnum fromCode(int code) {
        for (LogTypeEnum type : LogTypeEnum.values()) {
            if (type.code == code) {
                return type;
            }
        }
        return OTHER;
    }

    /**
     * 通过名称获取枚举实例（不区分大小写）
     * @param name 枚举名称
     * @return 枚举实例（未找到返回OTHER）
     */
    public static LogTypeEnum fromName(String name) {
        if (name == null) {
            return OTHER;
        }
        try {
            return valueOf(name.toUpperCase());
        } catch (IllegalArgumentException e) {
            return OTHER;
        }
    }
}
